package 每日一题OJ;

/**
 * @author shy_black
 * @date 2019/4/12 11:25
 * @Description:
 * 汇编语言中有一种移位指令叫做循环左移（ROL），现在有个简单的任务，就是用字符串模拟这个指令的运算结果。
 * 对于一个给定的字符序列S，请你把其循环左移K位后的序列输出。
 * 例如，字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果，即“XYZdefabc”。
 * 是不是很简单？OK，搞定它！
 *
 * 创建一个temp数组，先将循环左移时，没有移动的字符放入temp的最前边
 * 再把循环移位有变动的字符依次放到temp最后
 * 返回temp转回String型的字符串值
 */
public class 左旋转字符串 {
    //循环左移，即将字符串整体向左移动，最左边的字符被放到最右边
    public String LeftRotateString(String str, int k) {
        char[] arr = str.toCharArray();
        if (arr.length == 0)
            return str;
        char[] temp = new char[arr.length];
        for (int i = k; i < arr.length; i++) {
            temp[i - k] = arr[i];

        }
        for (int i = 0; i < k; i++) {
            temp[arr.length - k + i] = arr[i];
        }
        return String.valueOf(temp);

    }
}